using jiuyuan.数据.用户类;
using jiuyuan.服务;
using Microsoft.EntityFrameworkCore;
using System.Security.Cryptography;
using System.Text;

namespace jiuyuan.数据.种子数据
{
    public static class 初始用户
    {
        /// <summary>
        /// 哈希密码
        /// </summary>
        private static string 哈希密码(string 密码)
        {
            var bytes = SHA256.HashData(Encoding.UTF8.GetBytes(密码));

            StringBuilder builder = new();
            for (int i = 0; i < bytes.Length; i++)
            {
                builder.Append(bytes[i].ToString("x2"));
            }
            return builder.ToString();
        }

        /// <summary>
        /// 初始化数据库种子数据
        /// </summary>
        public static async Task 初始化种子数据(游戏数据库上下文 context)
        {
            // 检查是否已存在管理员用户
            var 是否存在管理员 = await context.用户表.AnyAsync(u => u.用户名 == "admin");
            
            if (!是否存在管理员)
            {
                // 创建管理员用户
                var 管理员用户 = new 用户
                {
                    用户名 = "admin",
                    密码哈希 = 哈希密码("ysm520..."), 
                    邮箱 = "admin@jiuyuan.com",
                    是管理员 = true,
                };
                
                context.用户表.Add(管理员用户);
                await context.SaveChangesAsync();
            }
            else
            {
                Console.WriteLine("管理员用户已存在");
            }
        }
    }
}